/*
 * @Author: 你的名字
 * @Date: 2023-03-16 11:05:59
 * @FilePath: /demo-gather/src/lib/pdf.js
 * @Description: 
 */

import html2canvas from "html2canvas";
import jsPDF from "jspdf";

export const downloadPDF = async (page,title) => {
  // let modules = [page];
  let modules = page

  if (!modules.length) return;
  const a4Width = 595.28
  const a4Height = 841.89
  const pdf = new jsPDF('p', 'pt')
  // 生成所有pdf页
  async function setPdfPage() {
    for (let i = 0; i < modules.length; i++) {
      const item = modules[i]
      const canvas = await html2canvas(item)
      const contentWidth = canvas.width
      const contentHeight = canvas.height
      const pageData = canvas.toDataURL('image/jpeg', 1) // 第二个参数为图片质量，1为最高质量
      let imgHeight = (a4Width / contentWidth) * contentHeight // 根据a4纸比例，计算出图片的高度
      const marginY = (a4Height - imgHeight) / 2 // 计算出图片的上下边距
      // 第三个参数图片x轴位置，第四个参数图片y轴位置，第五个参数图片宽度，第六个参数图片高度
      pdf.addImage(pageData, 'JPEG', 0, marginY > 0 ? 0 : 0, a4Width, imgHeight > a4Height ? imgHeight : imgHeight)
      // 最后一个模块不需要再新增空白页
      if (i < modules.length - 1) {
        pdf.addPage()
      }
    }
  }
  await setPdfPage()
  pdf.save(title+".pdf") // 导出pdf
  // 还原元素
  // html2canvas(page).then(function(canvas) {
  //   canvas2PDF(canvas,title);
  // });
};


export  const canvas2PDF = (canvas,title) => {
  let contentWidth = canvas.width;
  let contentHeight = canvas.height;

  //a4纸的尺寸[595.28,841.89]，html页面生成的canvas在pdf中图片的宽高
  let imgWidth = 595.28;
  let imgHeight = 592.28/contentWidth * contentHeight;
if(imgHeight>841){
    imgHeight = 841;
    imgWidth = 841/contentHeight * contentWidth;
}
  // 第一个参数： l：横向  p：纵向
  // 第二个参数：测量单位（"pt"，"mm", "cm", "m", "in" or "px"）
  let pdf = new jsPDF("p", "pt");

  pdf.addImage(
    canvas.toDataURL("image/jpeg", 0.9),
    "JPEG",
    0,
    0,
    imgWidth,
    imgHeight
  );

  pdf.save(title+".pdf");
};

